<HTML>
	<HEAD>
		<TITLE>Introduction</TITLE>
	</HEAD>
	
	<BODY TEXT="black">
	<B>Introduction</FONT><BR></B><BR>
	
	A <b>pattern</b> is a general solution to a recurring engineering problem.
	Patterns are a very valuable part of the knowledge of domain experts, where the domain can be
	Software, Hardware, System design, or a specialty engineering discipline such as Safety, Security, Performance, etc.
	When engineering relies on <b>modeling</b>, a pattern naturally manifests itself as a recurring modeling principle -
	or <b>modeling pattern</b>.

	<BR><BR>
	The Modeling Pattern technology provides tool support for the creation, application, evolution and management
	of modeling patterns. The aim is to better share and disseminate the know-how of experts at the modeling level,
	hence contributing to productivity and quality in model-based engineering activities. Patterns can be defined
	declaratively, without programming, solely based on diagrams and wizards.
	
	<BR><BR>
	The technology can be integrated into Sirius-based modeling environments where model elements have unique
	identifiers (examples: UML Designer, Capella; counter-example: Ecore Tools).
	Sirius is leveraged to handle the diagramming aspects of modeling patterns such as layout and style.
	Albeit independent of modeling languages, the technology can - and sometimes must - be customized for
	a specific modeling environment in order to correctly integrate with its infrastructure and provide
	a better user experience.
	<BR><BR>
	
	The main supported features are:
	<ul>
		<li>
		The storage of patterns in catalogs and their reuse throughout models.
		</li><li>
		A pattern/model synchronization mechanism supporting the update and lifecycle management of patterns.
		</li><li>
		The ability to validate that a model still conforms to patterns and to visualize pattern violations.
		</li><li>
		Navigation and overview facilities for understanding the usage of patterns in complex models.
		</li><li>
		Mechanisms for the semi-automatic application and creation of patterns based on OCL queries.
		</li>
	</ul>
	<BR><BR>
	<IMG SRC="images/1_introduction_1.jpg"><BR><BR>
	
	Concretely, a pattern can be created (1) from model elements and stored in a catalog.
	These original model elements become the first instance (2) of the pattern.
	The pattern can then be applied somewhere in the same model or in a different one.
	This gives birth to a new instance (3) of the pattern.<BR>
	<BR> Patterns and instances have their own separate life cycles, but they can be synchronized whenever needed.
	It is possible to check that an instance still conforms to its pattern and have an overview of the differences.
	If there are differences, the instance can be updated (4) according to the last version of the pattern.
	Conversely, every instance can also be used for updating the pattern, thus allowing other instances to be updated accordingly.

	<BR><BR> 

	<BR> <A HREF="../../pages/2/2__User_Interface_Overview.html"> User Interface Overview </A>
	<BR> <A HREF="../../pages/3/3__Pattern_Creation.html"> Pattern Creation </A>
	<BR> <A HREF="../../pages/4/4__Browsing_Catalogs.html"> Browsing Catalogs </A>
	<BR> <A HREF="../../pages/5/5__Pattern_Application.html"> Pattern Application </A>
	<BR> <A HREF="../../pages/6/6__Instance_Management.html"> Instance Management </A>
	<BR> <A HREF="../../pages/7/7__Browsing_Instances.html"> Browsing Instances </A>
	<BR> <A HREF="../../pages/8/8__Templates.html"> Templates </A>
	<BR> <A HREF="../../pages/9/9_Known_Bugs_and_Limitations.html"> Known Bugs and Limitations </A>
	
	<BR>    <BR> 

	</BODY>
</HTML>